/** 
 *	项目独有的 文件上传控件, 图片显示, 删除等功能方法
 **/
var fileoperator = {};


//文件上传时的顺序：
	//1.fileQueued  ：添加队列
	//2.startUpload :开始上传流程
	//3.uploadStart ：单个文件开始上传
	//4.uploadProgress ：单个文件上传进度
	//5.uploadAccept ：单个文件上传到服务端响应后，会派送此事件来询问服务端响应是否有效。如果此事件handler返回值为false, 则此文件将派送server类型的uploadError事件
	//6.uploadSuccess/uploadError: 单个文件上传成功/失败
	//7.uploadComplete: 不管成功或者失败，文件上传完成时触发。
	//8.uploadFinished: 当所有文件上传结束时触发。

//图片类型
fileoperator.acceptImg = {
		title:Images,
		extensions: 'gif,jpg,jpeg,bmp,png',
		mimeTypes: 'image/gif, image/png, image/jpeg, image/bmp'
}

//excel类型
//图片类型
fileoperator.acceptExcel = {
		title:Excel,
		extensions: 'xls,png',
		mimeTypes: 'application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
}

/**
 * 用于初始化上传控件，并实现上传功能
 * divSelector : 指定选择文件的按钮容器
 * inputName ：上传控件的name属性值
 * isMultiple : 是否可以批量上传
 * url : 操作的url
 * acceptType:指定接收的文件类型
 * fileNumLimit: 验证文件总数量
 * formData： 传递的参数
 */
fileoperator.initWebUploadfile = function(divSelector, inputName, isMultiple, url, acceptType, fileNumLimit,formData){
	var uploader = WebUploader.create({
		auto :true,
	    pick:{
	    	id:divSelector,
	    	innerHTML:'选择文件',
	    	multiple: isMultiple
	    },
	    swf: server.url + '/assets/webuploader-0.1.5/Uploader.swf',
	    server:server.url + url,//'/manage/disabledDeliever/importExce1'
	    fileVal: inputName,
	    fileNumLimit: fileNumLimit,
	    //duplicate: false,//是否可以重复选择同一个文件
	    compress: null,//图片不压缩
	    threads:1,//上传并发数。允许同时最大上传进程数,为了保证文件上传顺序
	    disableGlobalDnd: true//禁止全屏拖拽
	});
}

/**
 * 附加参数-- 开始添加到队列前
 */
fileoperator.beforeFileQueued = function(uploader,validateCallBack ){
	uploader.on("beforeFileQueued", function(file) {
		if(!verify.isNull(validateCallBack)){
			var obj = validateCallBack();
			if(!verify.isNull(obj)){
				uploader.options.formData = obj;
			}
		}
	});
}

/*fileoperator.startUpload = function(uploader, validateCallBack){
	uploader.on("startUpload", function(file) {
		if(!verify.isNull(validateCallBack)){
			var obj = validateCallBack();
			if(obj != null){
				uploader.options.formData = obj;
			}else{
				//停止上传
				uploader.stop();
				uploader.reset();//重置队列
				uploader.refresh();//
			}
		}
	});
}*/


common.upload = function(){
	var uploader = WebUploader.Uploader({
		auto :true,
	    pick:{
	    	id:'#attach',
	    	innerHTML:'选择文件',
	    	multiple: false
	    },
	    swf: server.url + '/assets/webuploader-0.1.5/Uploader.swf',
	    server:server.url + '/manage/disabledDeliever/importExce1',
	    fileVal:'uploadFile',
	    fileNumLimit: 2,
	    //duplicate: false,//是否可以重复选择同一个文件
	    compress: null,//图片不压缩
	    resize: false,
	    threads:1,//上传并发数。允许同时最大上传进程数,为了保证文件上传顺序
	    disableGlobalDnd: true//禁止全屏拖拽
	});
	
	var $list = $("#thelist");
	// 当有文件添加到队列的时候
    uploader.on("fileQueued", function(file) {
        console.log("fileQueued:");
        $list.append( "<div id='"+  file.id + "' class='item'>" +
            "<span class='info'>" + file.name + "</span>" +
            "<span class='state'>正在上传...</span>" +
        "</div>");
    });
        
	uploader.on('uploadProgress',
		function(file, percentage) {
			var $li = $('#' + file.id); 
			var $percent = $li.find('.progress .progress-bar');
			
			// 避免重复创建
			if (!$percent.length) {
				$percent = $(
						'<div class="progress progress-striped active">'
								+ '<div class="progress-bar" role="progressbar" style="width: 0%">'
								+ '</div>' + '</div>')
						.appendTo($li).find('.progress-bar');
			}
			$percent.css('width', percentage * 100 + '%');
	});
	
	
	//文件上传成功时触发：
	uploader.on("uploadSuccess", function(file, response) {
		alert("上传成功")
        $( "#"+file.id ).find("span.state").text("已上传");
		console.log(response);
		alert(response);
    });
	
	uploader.on( 'uploadComplete', function( file ) {
        $( '#'+file.id ).find('.progress').fadeOut();
    });
	
	//文件上传失败时触发：
	uploader.on("uploadError", function(file, reason) {
		alert(reason);
        $( "#"+file.id ).find("span.state").text("上传出错");
        uploader.cancelFile(file);
    });
	
	//设置参数 uploader.option('server', "upFiles.do?aa=3");
	var opts = uploader.options;
	 uploader.on('error', function (code, file) {
		 var name=file.name;
		 var str="";
		 switch(code){
		 case "F_DUPLICATE":
			 str=name+"文件重复";
			 alert(str);
			 break;
		 case "Q_TYPE_DENIED":
			 str=name+"文件类型 不允许";
			 alert(str);
			 break;
		 //验证单个文件大小是否超出限制, 超出则不允许加入队列。
		 case "F_EXCEED_SIZE":				
			var imageMaxSize = 9;//通过计算
			str=name+"文件大小超出限制"+imageMaxSize+"M"; 
			alert(str);
			break; 
		 //验证文件总大小是否超出限制, 超出则不允许加入队列
		 case "Q_EXCEED_SIZE_LIMIT":
			 alert("超出空间文件大小");
         	 break;
         //验证文件总数量, 超出则不允许加入队列
		 case "Q_EXCEED_NUM_LIMIT":
			 alert("抱歉，超过每次上传数量图片限制" + opts.fileNumLimit);
		 // 类型不匹配，则派送错误事件，并返回	 
		 case "Q_TYPE_DENIED":
			 alert("类型不匹配");	
		 }
	 });
	 
	 $(".bootbox.modal").on("shown.bs.modal",function(){  
        uploader.refresh();
	 });
}
